package com.inheima.lmy;
import java.util.ArrayList;
import java.util.Scanner;

public class lmy2 {


        public static void main(String[] args) {

            Scanner sc = new Scanner(System.in);

            ArrayList<lmy1> list = new ArrayList<>();

            lo:
            while (true) {
                //菜单搭建
                System.out.println("-----欢迎来到学生管理系统-----");
                System.out.println("1.添加学生");
                System.out.println("2.删除学生");
                System.out.println("3.修改学生");
                System.out.println("4.查看所有学生");
                System.out.println("5.退出");
                System.out.println("请输入您的选择:");


                String choie = sc.next();

                switch (choie) {
                    case "1":
                        //System.out.println("添加学生");
                        addStudent(list);
                        break;
                    case "2":
                        //System.out.println("删除学生");
                        deleteStudent(list);
                        break;
                    case "3":
                        //System.out.println("修改学生");
                        setStudent(list);
                        break;
                    case "4":
                        //System.out.println("查看所有学生");
                        quertStudent(list);
                        break;
                    case "5":
                        System.out.println("感谢您的使用");
                        break lo;
                    default:
                        System.out.println("您的输入有误！");
                        break;
                }
            }


        }

        //修改学生的方法
        public static void setStudent(ArrayList<lmy1> list) {
            //给出提示信息
            System.out.println("请输入您要修改的学号:");
            //键盘录入要修改的学生学号
            Scanner sc = new Scanner(System.in);
            String setsid = sc.next();
            //调用getIndex方法，查找该学号在集合中出现的索引位置
            int index = getIndex(list, setsid);
            //根据索引判断，学号在集合中是否存在
            if (index == -1) {
                //不存在 给她提示
                System.out.println("查无信息，请重新出入:");
            } else {
                //存在 接受新的学生信息
                System.out.println("请输入新的学生姓名:");
                String name = sc.next();
                System.out.println("请输入新的学生年龄:");
                int age = sc.nextInt();
                System.out.println("请输入新的学生生日:");
                String birthday = sc.next();
                //封装为新的学生对象
                lmy1 stu = new lmy1(setsid, name, age, birthday);
                //调用集合的set方法，完成修改
                list.set(index, stu);
            }
        }

        //删除学生的方法
        public static void deleteStudent(ArrayList<lmy1> list) {
            //给出提示信息
            System.out.println("请输入您要删除的学号:");
            //键盘接受要删除的学号
            Scanner sc = new Scanner(System.in);
            String deleteSid = sc.next();
            //调佣getIndex方法，查找该学号在集合中出现的索引位置
            int index = getIndex(list, deleteSid);
            //根据索引判断，学号在集合中是否存在
            if (index == -1) {
                //不存在 给提示
                System.out.println("查无信息，请重新输入:");
            } else {
                //存在 删除
                list.remove(index);
                System.out.println("删除成功~");
            }


        }

        //查看学生的方法
        public static void quertStudent(ArrayList<lmy1> list) {
            //判断集合中是否存在数据，如果不存在给出提示
            if (list.size() == 0) {
                System.out.println("无信息，请添加后重新查询~");
                return;
            }
            //存在的话 展示表头数据
            System.out.println("学号\t\t姓名\t年龄\t生日");
            //遍历集合，获取每一个对象的信息，打印
            for (int i = 0; i < list.size(); i++) {
                lmy1 stu = list.get(i);
                System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t\t" + stu.getBirthday() + "\t");
            }
        }

        //添加学生的方法
        public static void addStudent(ArrayList<lmy1> list) {
            Scanner sc = new Scanner(System.in);
            //给出录入的提示信息

            String sid;

            while (true) {
                System.out.println("请输入学号:");
                sid = sc.next();

                int index = getIndex(list, sid);
                if (index == -1) {
                    //sid不存在
                    break;
                }
            }


            System.out.println("请输入姓名:");
            String name = sc.next();
            System.out.println("请输入年龄:");
            int age = sc.nextInt();
            System.out.println("请输入生日:");
            String birthday = sc.next();
            //将键盘录入的信息封装为学生对象
            lmy1 stu = new lmy1(sid, name, age, birthday);
            //将封装好的学生对象，添加到集合容器中
            list.add(stu);
            //给出添加成功的提示信息
            System.out.println("添加成功!");
        }

        /*
            getIndex:接受一个集合对象，接收一个学生学号

            查找这个学号在集合中出现的索引位置
         */
        public static int getIndex(ArrayList<lmy1> list, String sid) {
            //假设传入的学号 在集合中不存在
            int index = -1;
            //遍历集合，获取每一个学生对象，准备进行查找
            for (int i = 0; i < list.size(); i++) {
                lmy1 stu = list.get(i);
                //获取每一个学生对象的学号
                String id = stu.getSid();
                //使用获取出的学生学号，和传入的学生学号（查找的学生学号）进行对比
                if (id.equals(sid)) {
                    //如果存在的话，让index变量记录正确的索引位置
                    index = i;
                }
            }
            return index;
        }
    }

